package kiv.gener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;


/**
 * Třída pro vygenerování bodu elektráren a míst 
 * a jednotlivých vzdáleností.
 * 
 * @author Ondřej Ptáček
 *
 */
public class Odberatele {
	public static int pocetZdroju=11;
	/**
	 * Kontroluje počet zdrojů
	 */
	public static int typRazeni=1;
	/**
	 * Kontrojue typ razeni (jestli vůči barákům nebo vůči zdrojům).
	 */
	public static List<Krajina> poleMistKomplet = new ArrayList<Krajina>();
	/**
	 * ArrayList kde jsou uožena všechna data
	 */
	public static Krajina[] poleObjektu = new Krajina[Odberatele.poleMistKomplet.size()];
	/**
	* Tato metoda vygeneruje do vstupního souboru 1111 typu pro objekty a 
	* následně k nim nahodně vygeneruje souřadnice X a Y, kromě elektráren ty jsou pevně umístěnné.
	* Po vygenerování souřadnic pomocí vzorce na vzdálenost dvou bodů, spočteme všechny vzdálenosti od 
	* elektráren. 
	*/
	public static void Odber() throws IOException {
		Krajina[] poleMist = new Krajina[1111];
		
		PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("vstup.txt")));
		int c=0;
		pw.println("HL");
		int f=0;
		do
			{
				pw.println("ALT");
				f++;
				
			}
		while(f!=10);
		do
			{
				pw.println("0");
				c++;
			}
		while(c!=1000);
			
		c=0;
		
		do
			{
				pw.println("1");
				c++;
			}
		while(c!=100);
		pw.close();		
		
		PrintWriter vystup = new PrintWriter(new BufferedWriter(new FileWriter("souradnice.txt")));		
				
		File vstup= new File("vstup.txt");
		Scanner sc= new Scanner(vstup);
		String statickyVstup=sc.next();
		Krajina p=new Krajina(statickyVstup, 0, 125, 125) ;
		poleMist[0]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 1, 50, 75);
		poleMist[1]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 2, 100, 75);
		poleMist[2]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 3, 150, 75);
		poleMist[3]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 4, 200, 75);
		poleMist[4]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 5, 200, 125);
		poleMist[5]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 6, 200, 175);
		poleMist[6]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 7, 150, 175);
		poleMist[7]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 8, 100, 175);
		poleMist[8]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 9, 50, 175);
		poleMist[9]=p;
		statickyVstup=sc.next();
		p=new Krajina(statickyVstup, 10, 50, 125);
		poleMist[10]=p;
		int pam = 11;
		
		double x=0;
		double y=0;
		int vstupnix=0;
		int vstupniy=0;
		int id=11;
		int[][] vzdalenosti= new int[pocetZdroju][1111];	
		
		//int tisk=11;
		
		
		
		int radek=11;
		do
			{
				x=Math.random()*250+1;
				y=Math.random()*250+1;
				x=Math.abs(x);
				y=Math.abs(y);
				vstupnix=(int) x;
				vstupniy=(int) y;
				int cislo=0;
				int podminka=0;
				int zdroj=0;
				int pocetRadek=1111;
				Krajina[] o = new Krajina[pocetRadek];
				
				//Zkouska
				
				do
					{
						Krajina test=poleMist[cislo];     //testovaní randoomu -> aby x a y nemohly byt stejný
						int x1 = test.x;
						int y1 = test.y;
						if(x==x1&&y==y1)
							{
								podminka=1;
								break;
							}
						cislo++;
					}
				while(cislo<id);
				if(podminka!=1)
					{
						String vstupniRadek=sc.next();
						do
							{
								double prvni = Math.pow(vstupnix-poleMist[zdroj].x, 2);
								double druhy = Math.pow(vstupniy-poleMist[zdroj].y, 2);
								prvni= Math.sqrt((prvni+druhy));
								int vzdalenost= (int) prvni;
								vzdalenosti[zdroj][radek]=vzdalenost;
								zdroj++;
							}
						while(zdroj!=pocetZdroju);
						o[id]=new Krajina(vstupniRadek, id, vstupnix, vstupniy);
						poleMist[pam]=o[id];
						pam++;
						radek++;
						id++;
						
						
					}
					
			}
		while(sc.hasNext());
		int ppt =0;
		int ppt1=0;
		do
		{
			ppt1=0;
			do
				{
					poleMist[ppt].vzdalenosti[ppt1]=vzdalenosti[ppt1][ppt];
					ppt1++;
				}
			while(ppt1!=11);
			poleMistKomplet.add(poleMist[ppt]);
			vystup.println(poleMistKomplet.get(ppt).id
						+";"+poleMistKomplet.get(ppt).typ
						+";"+poleMistKomplet.get(ppt).x
						+";"+poleMistKomplet.get(ppt).y
						+";"
						
						);
						
			ppt++;
		}
		while(ppt!=poleMist.length);
		vystup.close();
		/**ppt = 0;
		do
			{
				poleMistKomplet.add(poleObjektu[ppt]);
				vystup.println(Arrays.toString(poleObjektu[ppt].sousede));		
				ppt++;
			}
		while(ppt!=poleObjektu.length);
		*/
		
		
		ppt=0;
		do
			{
				//System.out.println(Arrays.toString(poleMistKomplet.get(ppt).vzdalenosti));
				ppt++;
			}
		while(ppt!=poleMistKomplet.size());
		sc.close();
		
	}
}
